<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <p data-lake-id="ub372c6a2" id="ub372c6a2"><span data-lake-id="u964dcddc" id="u964dcddc">闰秒概念是 1972 年提出的，之所以有这个概念，主要是因为由于潮汐等自然现象的影响，地球的自转速度并不是恒定的。</span></p>
  <p data-lake-id="ue6dfe6c5" id="ue6dfe6c5"><span data-lake-id="u525d9cb6" id="u525d9cb6">​</span><br></p>
  <p data-lake-id="u3f6003da" id="u3f6003da"><span data-lake-id="u47886309" id="u47886309">所以，每隔一段时间世界标准时间「协调世界时（UTC）」会依据地球围绕太阳运动计算的「世界时（UT）」之间出现小的偏差。</span></p>
  <p data-lake-id="u99013854" id="u99013854"><span data-lake-id="uc1275e8f" id="uc1275e8f">​</span><br></p>
  <p data-lake-id="ub43c571d" id="ub43c571d"><span data-lake-id="ucbe091cc" id="ucbe091cc">所以就需要对协调世界时进行调快或者拨慢1秒来消除这个偏差。</span></p>
  <p data-lake-id="u2d112c32" id="u2d112c32"><span data-lake-id="ub7d1220e" id="ub7d1220e">​</span><br></p>
  <p data-lake-id="u3c5e068f" id="u3c5e068f"><span data-lake-id="ud67099b5" id="ud67099b5">闰秒分为正闰秒和负闰秒，正闰秒表示需要在UTC中插入1秒，负闰秒表示需要在UTC中减少1秒。</span></p>
  <p data-lake-id="u4c9682f7" id="u4c9682f7"><span data-lake-id="uf2e3b14c" id="uf2e3b14c">​</span><br></p>
  <h3 data-lake-id="BW58n" id="BW58n"><span data-lake-id="u4278c26b" id="u4278c26b">闰秒发生</span></h3>
  <p data-lake-id="u3a556f02" id="u3a556f02"><span data-lake-id="u09d63161" id="u09d63161">当科学家们发现”哎呀、今年的地球转的有点快呀，赶紧加一个闰秒来校正一下吧“，这个时间就会发生”正闰秒”。</span></p>
  <p data-lake-id="u5816a232" id="u5816a232"><span data-lake-id="u2efece33" id="u2efece33">​</span><br></p>
  <p data-lake-id="u52759702" id="u52759702"><span data-lake-id="ub1cd03c5" id="ub1cd03c5">当闰秒发生时，就需要通过网络时间协议NTP (Network time protocol)来进行时间同步，NTP服务器会一级一级地下发闰秒事件通知直到最边缘的NTP服务器，然后NTP服务器就会把闰秒通知发给客户端的操作系统，由操作系统来处理闰秒通知。</span></p>
  <p data-lake-id="u28b7f074" id="u28b7f074"><span data-lake-id="u5b84098e" id="u5b84098e">​</span><br></p>
  <p data-lake-id="u507d17fa" id="u507d17fa"><span data-lake-id="ubaa2337a" id="ubaa2337a">如果你的计算机系统没有开启NTP服务，那么导致的问题就是你的计算机上的机器时间就会比世界时间慢1秒。</span></p>
  <p data-lake-id="ube0e3a01" id="ube0e3a01"><span data-lake-id="u2a2f9c02" id="u2a2f9c02">如果开了NTP服务的话，就需要操作系统来处理这个闰秒。</span></p>
  <h3 data-lake-id="REDUr" id="REDUr"><span data-lake-id="uc24d59de" id="uc24d59de">闰秒的处理</span></h3>
  <p data-lake-id="u6e6292fd" id="u6e6292fd"><span data-lake-id="uc73d01bb" id="uc73d01bb">一般来说，闰秒的调整一般被安排在6月30日或者12月31日，一般会调整在最后一分钟，也就是说，某一年的6月30日的11:59分有61秒。那么计算机系统会如何处理这个闰秒呢？</span></p>
  <p data-lake-id="u9cb75ef8" id="u9cb75ef8"><span data-lake-id="u6149feef" id="u6149feef">​</span><br></p>
  <p data-lake-id="uff968667" id="uff968667"><span data-lake-id="ud1cedc96" id="ud1cedc96">一般有以下几种方式，如：</span></p>
  <p data-lake-id="uc57e8d9d" id="uc57e8d9d"><span data-lake-id="u1dfb73de" id="u1dfb73de">​</span><br></p>
  <p data-lake-id="u86caeeeb" id="u86caeeeb"><span data-lake-id="u3e0ccf19" id="u3e0ccf19">1、直接显示23:59:60这样的时间。</span></p>
  <p data-lake-id="u46cadf46" id="u46cadf46"><span data-lake-id="uc8d2d75c" id="uc8d2d75c">2、显示两次23:59:59这个时间。</span></p>
  <p data-lake-id="uc43762c0" id="uc43762c0"><span data-lake-id="u2aaa9639" id="u2aaa9639">3、把这一秒平均分到最后一分钟的每一秒钟，也就是11:59还是有60秒，但是每一秒的时长是1+1/60 秒。</span></p>
  <p data-lake-id="uf88d811f" id="uf88d811f"><span data-lake-id="u26cb1ee3" id="u26cb1ee3">​</span><br></p>
  <p data-lake-id="uca943477" id="uca943477"><span data-lake-id="ufce4e592" id="ufce4e592">不同的操作系统，不同操作系统的不同版本，都会有不同的处理方式，所以我们的代码就需要有足够的鲁棒性来兼容这些闰秒的处理方式，如果没有做好兼容，那么就会发生各种各样的问题。</span></p>
  <p data-lake-id="uf9e17095" id="uf9e17095"><span data-lake-id="u0b6a302e" id="u0b6a302e">​</span><br></p>
  <p data-lake-id="u5715e2c5" id="u5715e2c5"><span data-lake-id="u5bb5111b" id="u5bb5111b">如需要兼容对23:59:60的处理；如操作会出现两次23：59：59，这对于一些对时间有精确的强依赖的程序来说，可能就会导致致命的问题，尤其是一些依赖时间戳的服务或者工具。</span></p>
  <h3 data-lake-id="aExed" id="aExed"><span data-lake-id="u4f790a97" id="u4f790a97">闰秒的危害</span></h3>
  <p data-lake-id="u7315a293" id="u7315a293"><span data-lake-id="ucb06995c" id="ucb06995c">50年来，闰秒已经出现过27次，每一次出现都是一片”哀鸿遍野”，如：</span></p>
  <p data-lake-id="u0faf16c7" id="u0faf16c7"><span data-lake-id="u79987b90" id="u79987b90">​</span><br></p>
  <p data-lake-id="u5b879a2d" id="u5b879a2d"><span data-lake-id="u839d0f67" id="u839d0f67">2012 年 7 月 1 日零点， Reddit、Mozilla、领英、Yelp 和 Amadeus 等网站宕机数十分钟。</span></p>
  <p data-lake-id="ucc9db7ff" id="ucc9db7ff"><span data-lake-id="u8789f4b2" id="u8789f4b2">2015 年 7 月 1 日零点，全球约 2000 个计算机网络突然短暂中断；美国洲际交易所被迫中止交易 61 分钟。</span></p>
  <p data-lake-id="u7025f2d0" id="u7025f2d0"><span data-lake-id="u4b2e910f" id="u4b2e910f">2017 年 1 月 1 日零点，Cloudflare 等云服务厂商服务突然崩溃。</span></p>
  <p data-lake-id="uf3854217" id="uf3854217"><span data-lake-id="u0ddf8bb5" id="u0ddf8bb5">因为闰秒的发生是受自然现象影响的，所以他完全无法预测也没有任何规律。对于程序员来说，这种无规律的事情，每次发生都需要进行一次特殊处理，而每一次特殊处理都可能要付出惨痛的代价。</span></p>
  <p data-lake-id="u1c3afa1f" id="u1c3afa1f"><span data-lake-id="u427a4662" id="u427a4662">​</span><br></p>
  <p data-lake-id="u1f587b63" id="u1f587b63"><span data-lake-id="ufd49df3e" id="ufd49df3e" class="lake-fontsize-12" style="color: rgb(85, 85, 85)">2022年，Google、微软、facebook 和亚马逊终于忍不了了，联合呼吁废除闰秒。。。</span></p>
 </body>
</html>